importPackage(Packages.de.elo.ix.client);
//@include lib_Class.js
//@include lib_handlebars.js
//@include lib_sol.common.Config.js
//@include lib_sol.common.WfUtils.js
//@include lib_sol.common.Template.js
//@include lib_sol.common.TranslateTerms.js
//@include lib_sol.common.ix.ServiceBase.js
var logger = sol.create("sol.Logger", { scope: "sol.common.ix.services.DMSDesktop" });
/**
* @private
* Provides service functions for the DMS Desktop.
*
* This class is for internal use only. The behavior could be changed without notice.
*
* # Usage
*
* ## Load ELOas configuration
*
* sol.common.IxUtils.execute("RF_sol_common_service_DMSDesktopLoadAsConfig", {
* solution: "contract" // optional, fallback would be the common as.config
* });
*
* // result //
* {
* protocol: "http",
* serverName: "localhost",
* port: "8080",
* serviceName": "as-contract"
* }
*
* ## Retrieve workflow status
*
* sol.common.IxUtils.execute("RF_sol_common_service_DMSDesktopGetWfStatus", {
* flowId: "4711"
* });
*
* // result //
* {
* wfstatus: "CANCELED"
* }
*
* ## Translate terms
*
* sol.common.IxUtils.execute("RF_sol_common_service_DMSDesktopTranslate", {
* keys: ["sol.contract.client.ribbon.tabContract"],
* language: "en" // optional, default is the IXConnection language
* });
*
* // result //
* [
* {
* key: "sol.contract.client.ribbon.tabContract",
* lang: "en",
* text: "Contracts"
* }
* ]
*
* ## Apply handlebars
*
* sol.common.IxUtils.execute("RF_sol_common_service_DMSDesktopHandlebars", {
* transformations: [
* { source: "Hello {{name}}.", context: { name: "Max" } },
* { source: "Hello {{name}}.", context: { name: "Moritz" } }
* ]
* });
*
* // result //
* [
* { source: "Hello {{name}}.", context: { name: "Max" }, text: "Hello Max." },
* { source: "Hello {{name}}.", context: { name: "Moritz"}, text: "Hello Moritz." }
* ]
*
* @author PZ, ELO Digital Office GmbH
* @version 1.03.004
*
* @eloix
* @requires handlebars
* @requires sol.common.Config
* @requires sol.common.WfUtils
* @requires sol.common.TranslateTerms
* @requires sol.common.ix.RfUtils
* @requires sol.common.ix.ServiceBase
*/
sol.define("sol.common.ix.services.DMSDesktop", {
extend: "sol.common.ix.ServiceBase",
initialize: function (config) {
var me = this;
me.$super("sol.common.ix.ServiceBase", "initialize", [config]);
},
/**
* Loads the ELOas server configuration
* @return {Object} The ELOas server configuration
* @return {String} return.protocol
* @return {String} return.server
* @return {String} return.port
* @return {String} return.name
*/
loadAsConfig: function () {
var me = this,
config;
config = sol.create("sol.common.Config");
return config.loadEloAsConfig(me.solution);
},
/**
* Retrieves the status of a workflow.
* @return {Object}
* @return {String} return.wfstatus
*/
getWfStatus: function () {
var me = this,
result;
if (typeof me.flowId === "undefined") {
throw "IllegalArgumentException: no 'flowId' set";
}
result = {
wfstatus: sol.common.WfUtils.getWorkflowStatus(me.flowId)
};
return result;
},
/**
* Translates a key.
* @return {Object[]}
* @return {String} return.key
* @return {String} return.lang
* @return {String} return.text
*/
translate: function () {
var me = this,
result = [],
language;
if (typeof me.keys === "undefined") {
throw "IllegalArgumentException: no 'keys' set";
}
language = me.language || ixConnect.loginResult.clientInfo.language;
sol.common.TranslateTerms.require(me.keys);
me.keys.forEach(function (key) {
var text = sol.common.TranslateTerms.getTerm(language, key);
result.push({ key: key, lang: language, text: text });
});
return result;
},
getConfigString: function (cfgTemplate, data) {
return cfgTemplate ? Handlebars.compile(cfgTemplate)(data) : null;
},
prepareCfgObj: function (cfgTemplate, actionCfg) {
var me = this,
cfgObj, regex, objIdReplacement;
cfgTemplate = cfgTemplate.replace(/\\{{/g, "{{");
if (cfgTemplate.indexOf("\"{{objId}}\"") > -1) {
regex = new RegExp("\"{{objId}}\"", "g");
objIdReplacement = (actionCfg.objId) ? "\"" + actionCfg.objId + "\"" : null;
} else {
regex = new RegExp("{{objId}}", "g");
objIdReplacement = (actionCfg.objId) ? actionCfg.objId : null;
}
cfgTemplate = cfgTemplate.replace(regex, objIdReplacement);
try {
cfgTemplate = me.getConfigString(cfgTemplate, actionCfg);
} catch (ex) {
}
cfgObj = cfgTemplate ? JSON.parse(cfgTemplate) : {};
cfgObj.$templating = { $type: actionCfg.type, $tree: actionCfg.tree, $preconditions: actionCfg.preconditions };
return cfgObj;
},
handlebars: function () {
var me = this,
result = [];
if (typeof me.transformations === "undefined") {
throw "IllegalArgumentException: no 'transformations' set";
}
me.transformations.forEach(function (transformation) {
if (transformation.source && transformation.context) {
transformation.text = JSON.stringify(me.prepareCfgObj(transformation.source, transformation.context));
}
result.push(transformation);
});
return result;
}
});
/**
* @member sol.common.ix.services.DMSDesktop
* @method RF_sol_common_service_DMSDesktopLoadAsConfig
* @static
* @inheritdoc sol.common.ix.ServiceBase#RF_ServiceBaseName
*/
function RF_sol_common_service_DMSDesktopLoadAsConfig(ec, args) {
var rfUtils = sol.common.ix.RfUtils,
params, service, result;
logger.enter("RF_sol_common_service_DMSDesktopLoadAsConfig", args);
params = rfUtils.parseAndCheckParams(ec, arguments.callee.name, args);
service = sol.create("sol.common.ix.services.DMSDesktop", params);
result = rfUtils.stringify(service.loadAsConfig());
logger.exit("RF_sol_common_service_DMSDesktopLoadAsConfig", result);
return result;
}
/**
* @member sol.common.ix.services.DMSDesktop
* @method RF_sol_common_service_DMSDesktopGetWfStatus
* @static
* @inheritdoc sol.common.ix.ServiceBase#RF_ServiceBaseName
*/
function RF_sol_common_service_DMSDesktopGetWfStatus(ec, args) {
var rfUtils = sol.common.ix.RfUtils,
params, service, result;
logger.enter("RF_sol_common_service_DMSDesktopGetWfStatus", args);
params = rfUtils.parseAndCheckParams(ec, arguments.callee.name, args, "flowId");
service = sol.create("sol.common.ix.services.DMSDesktop", params);
result = rfUtils.stringify(service.getWfStatus());
logger.exit("RF_sol_common_service_DMSDesktopGetWfStatus", result);
return result;
}
/**
* @member sol.common.ix.services.DMSDesktop
* @method RF_sol_common_service_DMSDesktopTranslate
* @static
* @inheritdoc sol.common.ix.ServiceBase#RF_ServiceBaseName
*/
function RF_sol_common_service_DMSDesktopTranslate(ec, args) {
var rfUtils = sol.common.ix.RfUtils,
params, service, result;
logger.enter("RF_sol_common_service_DMSDesktopTranslate", args);
params = rfUtils.parseAndCheckParams(ec, arguments.callee.name, args, "keys");
service = sol.create("sol.common.ix.services.DMSDesktop", params);
result = rfUtils.stringify(service.translate());
logger.exit("RF_sol_common_service_DMSDesktopTranslate", result);
return result;
}
/**
* @member sol.common.ix.services.DMSDesktop
* @method RF_sol_common_service_DMSDesktopHandlebars
* @static
* @inheritdoc sol.common.ix.ServiceBase#RF_ServiceBaseName
*/
function RF_sol_common_service_DMSDesktopHandlebars(ec, args) {
var rfUtils = sol.common.ix.RfUtils,
params, service, result;
logger.enter("RF_sol_common_service_DMSDesktopHandlebars", args);
params = rfUtils.parseAndCheckParams(ec, arguments.callee.name, args, "transformations");
service = sol.create("sol.common.ix.services.DMSDesktop", params);
result = rfUtils.stringify(service.handlebars());
logger.exit("RF_sol_common_service_DMSDesktopHandlebars", result);
return result;
}